<?php
/**
 * <b>Documentacao de classes:</b>
 * Essa classe foi criada para mostrar a interacao de objetos. Logo depois replicamos ele para ver sobre
 * a documentacao de classes com PHPDOC.
 * 
 *@copyright (c) 2015, Romulo B. Bosco 
 */
class DocumentacaoDeClasse {
    
    /** @var string Nome da empresa*/
    public $Empresa;

    /**
     *Esse atributo e auto gerada pela classe e incrementa o numero de funcionario.
     * @var int Numero de funcionarios. 
     */
    public $Setores;
    
    /** @var InteracaoClasse Objeto vindo da classe InteracaoClasse*/
    public $Funcionario;
    
    function __construct($Empresa) {
        $this->Empresa = $Empresa;
        $this->Setores = 0;
    }
    
    /**
     * <b>Contratar Funcionario:</b> Informe um objeto da classe InteracaoClasse, o cargo e o salario do 
     * funcionario a ser contratado.
     * @param object $Funcionario = Objeto da classe InteracaoClasse
     * @param string $Cargo = Profissao ou cargo a ocupar
     * @param float $Salario = Salario do funcionario
     */
    public function Contratar($Funcionario, $Cargo, $Salario) {
        $this->Funcionario = (object)$Funcionario;
        $this->Funcionario->Trabalhar($this->Empresa, $Salario, $Cargo);
        $this->Setores +=1;
    }
    
    public function Pagar(){
        $this->Funcionario->Receber($this->Funcionario->Salario);
    }
    
    public function Promover($Cargo, $Salario=null) {
        $this->Funcionario->Profissao = $Cargo;
        if($Salario):
            $this->Funcionario->Salario = $Salario;
        endif;
    }
    
    public function Funcionario($Funcionario) {
        $this->Funcionario = (object)$Funcionario;
    }
            
    public function Demitir($Recisao) {
        $this->Funcionario->Receber($Recisao);
        $this->Funcionario->Empresa = null;
        $this->Funcionario->Salario = null;
        $this->Setores -=1;
    }

}
